/*
	author: TangQiao , Wind @ Beijing Normal University

	problem name: California Jones and the Gate to Freedom 
	
	source : BNU Online Judge
	
	problem type: 数学题
	
	problem description: 按顺序给出一组数字的编号,然后给你一个编号和分组情况,
	让你判断这个编号和分组情况是否是对应的.
	
	problem solution: 以8个数字为例,如果第一个数字选了的话,那么编号是从0~C(7,3),
	即从另外7个数字中选三个作为一组,共有C(7,3)种选法.
	这样的话,我们可从第一位开始试,如果第二个数字选了的话,那么编号就是C(7,3)+C(6,3)
	,这样递推一遍就可以得到答案.
	
	award & note :  做题前还是应该估计一下数量级,如果数量级明显不行的话,就不应该尝试那
	样的方法.
	
	faults: 1.没有考虑好N==2的情况.
	        2.开始以为可以用模拟编号的步骤来做,结果超时了.
	
	date : 2005.7.25 北师大个人练习赛11
	
*/
#include <stdio.h>
#include <string.h>
#include <math.h>

int n;
int shu[50];
int k;
char ss[50];
int test[50];
int find[50];

double change(char *s)
{
	int i,len, mul;
	double tot=0;
	len=strlen(s);
	mul=1;
	for (i=len-1;i>=0;i--)
	{
		tot+=(s[i]-'0')*mul;
		mul*=2;
	}
	return tot;	
}

double cnk(int n, int k)
{
	double tot;
	int i,j;
	tot=1;
	for (i=n,j=1;j<=k;j++)	
		tot*=i--;
	for (i=1;i<=k;i++)
		tot/=i;
	return tot;
	
}

main()
{
	int	n2, i, j, cc,temp;
	double step;
	int tt[50];

	int yes;

//printf("%lf",cnk(5,3));
	while (1)
	{
		scanf("%d", &n);
		if (n==0) break;
		for (i=1;i<=n;i++)
			scanf("%d", &shu[i]);
		scanf("%d", &k);
		for (cc=1;cc<=k;cc++)
		{
			memset(ss,0,sizeof(ss));
			n2=n/2;
			scanf("%s", ss);
			for (i=1;i<=n2;i++)
				scanf("%d", &test[i]);
			step=change(ss);

			double count=0;
			double now;

			for (i=0;i<=n2;i++)
				tt[i]=i;

	

			if (step>0)
			for (i=1;i<=n2;i++)
			{
				tt[i]=tt[i-1]+1;
				while (count<step || fabs(count-step)<1e-7)
				{
					now=cnk(n-tt[i],n2-i);
					count+=now;
					tt[i]++;
					if (tt[1]>n+1) goto f_no;
				}
				tt[i]--;					
				count-=now;				
			}
	//		if (n==2) tt[1]--;
			
			for (i=1;i<=n2;i++)
				find[i]=shu[tt[i]];


			for (i=1;i<n2;i++)
				for (j=i+1;j<=n2;j++)
					if (test[i]>test[j])
					{
						temp=test[i];
						test[i]=test[j];
						test[j]=temp;
					}
			for (i=1;i<n2;i++)
				for (j=i+1;j<=n2;j++)
					if (find[i]>find[j])
					{
						temp=find[i];
						find[i]=find[j];
						find[j]=temp;
					}
			yes=1;
			for (i=1;i<=n2;i++)
				if (find[i]!=test[i])
				{
					yes=0;
					break;
				}
			if (yes)
			{
f_yes:			printf("TRUE\n");
			}
			else
			{
f_no:			printf("FALSE\n");			
			}

			
		}
		
		

	}
	
	return 0;
}